/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekemanrapatkerjaunit;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sadhar.cektabel.cekTabel;
import org.sadhar.cektabel.cekTabelDAO;
import org.sadhar.cektabel.cekTabelDAOImpl;
import org.sadhar.sia.common.ClassConnection;

/**
 *
 * @author bloodrunk
 */
public class PerekamanaRapatKerjaUnitDAOImpl implements PerekamanRapatKerjaUnitDAO {

    public PerekamanaRapatKerjaUnitDAOImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    /**
     * Digunakan untuk mendapatakan rapat kerja berdasarkan tahun dan kodeUnit(Diambil dari Session)
     * @param tahun
     * @param sessKdUnit
     * @return
     */
    public List<Map> getRapatKerjaByTahun(String tahun, String sessKdUnit) {
        String sql = "SELECT * FROM ppmk.rapatKerjaUnit rku "
                + " inner join ppmk.rapatKerja rk on(rku.kodeRapatKerja = rk.kodeRapatKerja) "
                + " inner join ppmk.jenisRapatKerja jrk on(rku.kodeJenisRapatKerja=jrk.kodeJenisRapatKerja)"
                + " inner join kamus.unkerja uk on(rku.kodeUnit=uk.Kd_unit_kerja) where rku.tahun=?  and rku.kodeUnit =?";
        return ClassConnection.getJdbc().queryForList(sql, new Object[]{tahun, sessKdUnit});
    }

    /**
     * Digunakan untuk menyimpan data rapatKerja unit kedalam tabel ppmk.rapatKerjaUnit
     * @param rapatKerjaUnit
     */
    public void insert(PerekamanRapatKerjaUnit rapatKerjaUnit) {
        String sql = "insert into ppmk.rapatKerjaUnit(tahun,kodeUnit,kodeRapatKerja,kodeJenisRapatKerja,isRencana) "
                + "values(?,?,?,?,?)";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    rapatKerjaUnit.getTahun(),
                    rapatKerjaUnit.getKodeUnit(),
                    rapatKerjaUnit.getKodeRapatKerja(),
                    rapatKerjaUnit.getKodeJenisRapatKerja(),
                    rapatKerjaUnit.getIsRencana()});
    }

    /**
     * Digunakan untuk melakukan perubahan pada data rapat kerja unit kedalam tabel ppmk.rapatKerjaUnit
     * @param rapatKerjaUnit
     * @throws Exception
     */
    public void update(PerekamanRapatKerjaUnit rapatKerjaUnit) throws Exception {
        String sql = "UPDATE ppmk.rapatKerjaUnit set kodeUnit=?,kodeRapatKerja=?,kodeJenisRapatKerja=?  "
                + " WHERE idRapatKerjaUnit=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    rapatKerjaUnit.getKodeUnit(),
                    rapatKerjaUnit.getKodeRapatKerja(),
                    rapatKerjaUnit.getKodeJenisRapatKerja(),
                    rapatKerjaUnit.getIdRapatKerjaUnit()});
    }

    /**
     * Digunakan untuk mengapus data rapat kerja unit
     * @param rapatKerjaUnit
     */
    public void delete(PerekamanRapatKerjaUnit rapatKerjaUnit) {
        String sql = "DELETE from ppmk.rapatKerjaUnit WHERE idRapatKerjaUnit=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    rapatKerjaUnit.getIdRapatKerjaUnit()});
    }

    /**
     * Digunakan untuk untuk mendapatkan data rapat kerja unit berdasarkan tahun,kodeRapatKerja dan kodeJenisRapatKerja
     * @param tahun
     * @param kodeRapatKerja
     * @param kodeJenisRapatKerja
     * @return
     * @throws Exception
     */
    public Map getRapatKerjaUnit(String tahun, int kodeRapatKerja, int kodeJenisRapatKerja) throws Exception {
        String sql = "SELECT *FROM ppmk.rapatKerjaUnit where tahun=? AND kodeRapatKerja=? AND kodeJenisRapatKerja=?";
        List<Map> result = ClassConnection.getJdbc().queryForList(sql,
                new Object[]{tahun, kodeRapatKerja, kodeJenisRapatKerja});
        Map map = new HashMap();
        for (Map m : result) {
            map = m;
        }
        return map;
    }

    // revisied by : taufan (BAPSI)
    public boolean cekDataTabel(String table, String[] field, String[] value) {
        cekTabel obj = new cekTabel();
        cekTabelDAO dao = new cekTabelDAOImpl();
        List lsNamaField = new ArrayList();
        List lsValueField = new ArrayList();
        for (int i = 0; i < field.length; i++) {
            lsNamaField.add(field[i].toString());
            lsValueField.add(value[i].toString());
        }
        obj.setNamaTabel(table);
        obj.setNamaField(lsNamaField);
        obj.setValueField(lsValueField);
        if (dao.cekTabel(obj)) {
            return true;
        } else {
            return false;
        }
    }
    //

    public List<Map> getAll() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
